/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import MODEL.Categoria;
import MODEL.Produtos;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 *
 * @author Rodrigo
 */
public class DaoProdutos extends Banco{
    
    public DaoProdutos(){
        connection=Conecta();
    }
    public void insereProduto(List<Produtos> produtos){
        for (Iterator<Produtos> it = produtos.iterator(); it.hasNext();) {
            Produtos p = it.next();
            try{
                String SQL = "INSERT INTO produtos VALUES (default,?,?,?,?,?)";
                PreparedStatement stmt = connection.prepareStatement(SQL);  

                stmt.setInt(1, p.getCategoria().getCodigo());
                stmt.setString(2, p.getNome());
                stmt.setDouble(3, p.getPreco_compra());
                stmt.setDouble(4, p.getPreco_venda());
                stmt.setDouble(5, p.getQuantia());

                stmt.execute();
                stmt.close();  
            }catch(Exception e){
                System.out.println("Erro insereProduto(List<produtos> produtos): "+e);
            }
        }
        Fecha();
    }
    public void insereProduto(Produtos produto){
        try {    
            String SQL = "INSERT INTO produtos VALUES (default,?,?,?,?,?)";
            PreparedStatement stmt = connection.prepareStatement(SQL);  
            
            stmt.setInt(1, produto.getCategoria().getCodigo());
            stmt.setString(2, produto.getNome());
            stmt.setDouble(3, produto.getPreco_compra());
            stmt.setDouble(4, produto.getPreco_venda());
            stmt.setDouble(5, produto.getQuantia());
            
            stmt.execute();  
            stmt.close();  
            
        } catch (Exception ex) {
            System.out.println(ex);
        }finally{
            Fecha();
        }
    }
    public List<Produtos> getProdutos(){
        
        List<Produtos> produtos = new ArrayList<Produtos>();
        try {    
            Statement stm = connection.createStatement();
            String SQL = "SELECT * FROM produtos";  
            ResultSet rs = stm.executeQuery(SQL);  

            while(rs.next())  
            {  
               Produtos p = new Produtos();
              p.setCodigo(rs.getInt("cod_produto"));
              p.setNome(rs.getString("nome"));
              p.setPreco_compra(rs.getDouble("valor_compra"));
              p.setPreco_venda(rs.getDouble("valor_venda"));
              p.setQuantia(rs.getDouble("quantia"));
              DaoCategoria dc = new DaoCategoria();
              p.setCategoria(dc.getCategoria(rs.getInt("cod_categoria")));
              produtos.add(p);
               
            } 
            
        } catch (Exception ex) {
            System.out.println(ex);
        }finally{
            Fecha();
        }
       
        return produtos;
    }
    public Produtos getProdutos(int cod_produto){
        
        Produtos produtos = new Produtos();
        try {    
            Statement stm = connection.createStatement();
            String SQL = "SELECT * FROM produtos WHERE cod_produto="+cod_produto;  
            ResultSet rs = stm.executeQuery(SQL);  

            while(rs.next())  
            {  
              produtos.setCodigo(rs.getInt("cod_produto"));
              produtos.setNome(rs.getString("nome"));
              produtos.setPreco_compra(rs.getDouble("valor_compra"));
              produtos.setPreco_venda(rs.getDouble("valor_venda"));
              produtos.setQuantia(rs.getDouble("quantia"));
              DaoCategoria dc = new DaoCategoria();
              produtos.setCategoria(dc.getCategoria(rs.getInt("cod_categoria")));
            } 
            
        } catch (Exception ex) {
            System.out.println(ex);
        }finally{
            Fecha();
        }
       
        return produtos;
    }
    
    public void removeProduto(Produtos prod){
       try{
           Statement stm = connection.createStatement();
           String SQL = "DELETE FROM produtos WHERE cod_produto = "+prod.getCodigo();
           stm.execute(SQL);
       }catch(Exception e){
           System.out.println(e);
       }finally{
            Fecha();
        }
    }
    
    public void updateProduto(Produtos produto){
       try{
           Statement stm = connection.createStatement();
           String SQL = "UPDATE produtos SET cod_categoria=?, nome=?, valor_compra=?, valor_venda=?, quantia=?  WHERE cod_produto = "+produto.getCodigo();
           PreparedStatement stmt = connection.prepareStatement(SQL);  
            
            stmt.setInt(1, produto.getCategoria().getCodigo());
            stmt.setString(2, produto.getNome());
            stmt.setDouble(3, produto.getPreco_compra());
            stmt.setDouble(4, produto.getPreco_venda());
            stmt.setDouble(5, produto.getQuantia());
            
            stmt.execute();  
            stmt.close();  
       }catch(Exception e){
           System.out.println(e);
       }finally{
            Fecha();
        } 
    }
}
